package controlador;

import modelo.*;

import java.awt.event.ActionEvent;

import vistas.IngredientesTableModel;
import vistas.JFIngrediente;
import vistas.JFProducto;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import java.util.Vector;

import javax.swing.table.DefaultTableModel;


public class ControladorJFProducto implements ActionListener{
	private JFProducto VentanaProducto;
	public Producto producto;
	DefaultTableModel modelo;
	List<Ingrediente> listaTableIng ;
	
	public ControladorJFProducto(){
		super();
		VentanaProducto = new JFProducto();
		producto = new Producto();
		VentanaProducto.setVisible(true);
		VentanaProducto.setLocationRelativeTo(null);
		VentanaProducto.addListener(this);
		cargarComboCategoria();
		cargarComboIngrediente();
		listaTableIng = new ArrayList<Ingrediente>();
	
	}

	@Override
	public void actionPerformed(ActionEvent e) 
	{
		ProductoDAO productoDAO = new ProductoDAO();
		
		if (e.getActionCommand().equals("Guardar"))
		{
			
				Producto productoAux=null;
				productoAux = productoDAO.consultarProducto(VentanaProducto.getJTCodigoP().getText());
				if(productoAux == null)
				{
					String vacio= VentanaProducto.getJTCodigoP().getText();
	   				if(vacio.equals(""))
	   				{
	   					this.VentanaProducto.mostrarMensaje("Debe ingresar el codigo del producto");
	   				}
	   				else
	   					{
	   					this.producto.setCodProducto(VentanaProducto.getJTCodigoP().getText());
	   					this.producto.setDescripcionProducto(VentanaProducto.getJTDescripcion().getText());
	   					this.producto.setPrecioProducto(VentanaProducto.getJTPrecio().getText());
	   					this.producto.setCategoriaProducto(VentanaProducto.getJCCategoria().getSelectedItem().toString());
					
	   					productoDAO.Insertar(producto);	
				
	   					this.VentanaProducto.mostrarMensaje("Producto Insertado con Exito");
	   					this.VentanaProducto.limpiar();
	   					
	   					}
				 }
				else 
					{
					this.VentanaProducto.mostrarMensaje("El codigo ha sido registrado anteriormente");
					this.VentanaProducto.limpiar();
		             }
					
		}
		if (e.getActionCommand().equals("Actualizar"))
		
		{
			Producto productoAux=null;
		    productoAux = productoDAO.consultarProducto(VentanaProducto.getJTCodigoP().getText());
   			if(productoAux != null)
   			{
   				this.producto.setCodProducto(VentanaProducto.getJTCodigoP().getText());
				this.producto.setDescripcionProducto(VentanaProducto.getJTDescripcion().getText());
				this.producto.setPrecioProducto(VentanaProducto.getJTPrecio().getText());
				this.producto.setCategoriaProducto(VentanaProducto.getJCCategoria().getSelectedItem().toString());
				productoDAO.actualizar(producto,VentanaProducto.getJTCodigoP().getText());
				this.VentanaProducto.mostrarMensaje("Producto actualizado con Exito");
				this.VentanaProducto.limpiar();
   				
   			}
   			
   			else
   				{
   				    VentanaProducto.mostrarMensaje("Este Producto ha sido registrado anteriormente");
       				this.VentanaProducto.limpiar();
       				
   				}			
		}
		if (e.getActionCommand().equals("Buscar"))
		{
			Buscar();
		}
		
		if(e.getActionCommand().equals("Cancelar")){
			this.VentanaProducto.limpiar();
			VentanaProducto.getJTCodigoP().enable(true);
		}
		
		if(e.getActionCommand().equals("Eliminar"))
		{
			productoDAO.Eliminar(producto);
			VentanaProducto.mostrarMensaje("Producto eliminado");
				this.VentanaProducto.limpiar();
				
		}
		if(e.getActionCommand().equals("Agregar"))
		{
			String vacio= VentanaProducto.getjTCantidad().getText();
			if(vacio.equals(""))
			{
				this.VentanaProducto.mostrarMensaje("Debe ingresar la cantidad del ingrediente");
			}
			else
			{
			String nombre= VentanaProducto.getJCIngredienteProducto().getSelectedItem().toString();
			String cant = VentanaProducto.getjTCantidad().getText();
			String codigop = VentanaProducto.getJTCodigoP().getText();
			String codigo= productoDAO.BuscarCodigo(nombre);
			productoDAO.InsertarProductoIngrediente(codigop, codigo, cant);
			
			CargarTable(codigo,nombre,cant);
			}
		}
	
	}
	
public void CargarTable(String codigo,String nombre, String cant){
	
	//String[] datos= new String[2];
	//String[] titulos=new String[]{"Codigo" ,"Ingrediente", "Cantidad"};
	
	modelo= new DefaultTableModel();
	VentanaProducto.getJTableIngrediente().setModel(modelo);
	

	Ingrediente miingrediente = new Ingrediente(codigo,nombre,cant);
	listaTableIng.add(miingrediente);
	
	

	IngredientesTableModel tm=new IngredientesTableModel(listaTableIng);
	this.VentanaProducto.setIngredientes(tm);
}

public void Buscar(){
		
		ProductoDAO productoDAO = new ProductoDAO();
	    Producto productoAux=null;
	    productoAux =productoDAO.consultarProducto(VentanaProducto.getJTCodigoP().getText());
		if(productoAux == null){
			this.VentanaProducto.mostrarMensaje("El producto no ha sido registrado");
			this.VentanaProducto.limpiar();
		}
		else {
			VentanaProducto.llenarCampos(productoAux);
		
		}
}


private void cargarComboCategoria(){
		
		ProductoDAO productoDAO = new ProductoDAO();		
		List<String> produc = productoDAO.consultarCategoria();
		     this.VentanaProducto.setcargarComboCategoria(produc);
    }
private void cargarComboIngrediente(){
	
	ProductoDAO productoDAO = new ProductoDAO();		
	List<String> product = productoDAO.consultarIngrediente();
	     this.VentanaProducto.setcargarComboIngrediente(product);
}


	}
